﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using fadmin.util;
using System.Data.SqlClient;
using System.Data;

namespace fadmin.Cliente
{
    class ClienteDAO : BaseDAO
    {
        //CONSULTAR
        public List<ClienteDTO> consultar(ClienteDTO cliente)
        {
            List<ClienteDTO> retorno = new List<ClienteDTO>();
            ClienteDTO dto = new ClienteDTO();

            SqlConnection con = null;
            string strProvider = base.GetStringConexao();
            string strSql = "select * from cliente where 1=1";
            
            if (!(cliente.nome == null))
            {
                strSql = strSql + " and nome like '%' + @nome + '%' ";

            }
            if (!(cliente.codigo_cliente == 0))
            {
                strSql = strSql + " and codigo_cliente like @codigo";

            }

            strSql = strSql + " order by nome ";
            
            con = new SqlConnection(strProvider);
            SqlCommand cmd = new SqlCommand(strSql, con);

            base.AdicionarParametro(ref cmd, "@nome", SqlDbType.VarChar, cliente.nome);
            base.AdicionarParametro(ref cmd, "@codigo", SqlDbType.Int, Convert.ToInt32(cliente.codigo_cliente));


            con.Open();
            cmd.CommandType = CommandType.Text;
            SqlDataReader reader = cmd.ExecuteReader();

            while (reader.Read())
            {
                ClienteDTO dtoCliente = new ClienteDTO();
                dtoCliente.codigo_cliente = Convert.ToInt32(reader["codigo_cliente"]);
                dtoCliente.nome = (String)(reader["nome"]);
                if (!((reader["nascimento"]).ToString().Trim().Equals("")))
                {
                    dtoCliente.nascimento = Convert.ToDateTime(reader["nascimento"]);
                }
                else
                {
                    dtoCliente.nascimento = Convert.ToDateTime("01/01/2012");
                }

                if (!((reader["observacao"]).ToString().Trim().Equals("")))
                {
                    dtoCliente.observacao = (String)(reader["observacao"]);
                }
                else
                {
                    dtoCliente.observacao = "Sem Observação";
                }

                if (!((reader["rua"]).ToString().Trim().Equals("")))
                {
                    dtoCliente.rua = (String)(reader["rua"]);
                }
                else
                {
                    dtoCliente.rua = "Sem Registro";
                }


                if (!((reader["numero"]).ToString().Trim().Equals("")))
                {
                    dtoCliente.numero = (String)(reader["numero"]);
                }
                else
                {
                    dtoCliente.numero = "S/N";
                }

                if (!((reader["complemento"]).ToString().Trim().Equals("")))
                {
                    dtoCliente.complemento = (String)(reader["complemento"]);
                }
                else
                {
                    dtoCliente.complemento = "S/C";
                }

                if (!((reader["bairro"]).ToString().Trim().Equals("")))
                {
                    dtoCliente.bairro = (String)(reader["bairro"]);
                }
                else
                {
                    dtoCliente.bairro = "Sem Registro";
                }

                if (!((reader["cidade"]).ToString().Trim().Equals("")))
                {
                    dtoCliente.cidade = (String)(reader["cidade"]);
                }
                else
                {
                    dtoCliente.cidade = "Sem Registro";
                }

                if (!((reader["telefone"]).ToString().Trim().Equals("")))
                {
                    dtoCliente.telefone = (String)(reader["telefone"]);
                }
                else
                {
                    dtoCliente.telefone = "Sem Registro";
                }

                if (!((reader["celular"]).ToString().Trim().Equals("")))
                {
                    dtoCliente.celular = (String)(reader["celular"]);
                }
                else
                {
                    dtoCliente.celular = "Sem Registro";
                }

                if (!((reader["uf"]).ToString().Trim().Equals("")))
                {
                    dtoCliente.uf = (String)(reader["uf"]);
                }
                else
                {
                    dtoCliente.uf = "S/R";
                }

                if (!((reader["email"]).ToString().Trim().Equals("")))
                {
                    dtoCliente.email = (String)(reader["email"]);
                }
                else
                {
                    dtoCliente.email = "Sem Registro";
                }

                if (!((reader["datacadastro"]).ToString().Trim().Equals("")))
                {
                    dtoCliente.datacadastro = Convert.ToDateTime(reader["datacadastro"]);
                }
                else
                {
                    dtoCliente.datacadastro = Convert.ToDateTime("01/01/2012");
                }


                dtoCliente.endereco = dtoCliente.rua + " Nº " + dtoCliente.numero + " Compl " + dtoCliente.complemento + ", " + dtoCliente.bairro;

                retorno.Add(dtoCliente);
            }

            reader.Close();
            con.Close();
            return retorno;
        }

        //Inserir Cliente
        public void inserir(ClienteDTO cliente)
        {
            SqlConnection con = null;
            string strProvider = base.GetStringConexao();
            string strSql = SQL.inserir;

            con = new SqlConnection(strProvider);
            SqlCommand cmd = new SqlCommand(strSql, con);

            base.AdicionarParametro(ref cmd, "@nome", SqlDbType.VarChar, cliente.nome);
            base.AdicionarParametro(ref cmd, "@rua", SqlDbType.VarChar, cliente.rua);
            base.AdicionarParametro(ref cmd, "@numero", SqlDbType.VarChar, cliente.numero);
            base.AdicionarParametro(ref cmd, "@complemento", SqlDbType.VarChar, cliente.complemento);
            base.AdicionarParametro(ref cmd, "@bairro", SqlDbType.VarChar, cliente.bairro);
            base.AdicionarParametro(ref cmd, "@cidade", SqlDbType.VarChar, cliente.cidade);
            base.AdicionarParametro(ref cmd, "@uf", SqlDbType.VarChar, cliente.uf);
            base.AdicionarParametro(ref cmd, "@observacao", SqlDbType.VarChar, cliente.observacao);
            base.AdicionarParametro(ref cmd, "@telefone", SqlDbType.VarChar, cliente.telefone);
            base.AdicionarParametro(ref cmd, "@celular", SqlDbType.VarChar, cliente.celular);
            base.AdicionarParametro(ref cmd, "@datacadastro", SqlDbType.DateTime, DateTime.Now );
            base.AdicionarParametro(ref cmd, "@nascimento", SqlDbType.DateTime, cliente.nascimento );
            base.AdicionarParametro(ref cmd, "@email", SqlDbType.VarChar, cliente.email);


            con.Open();
            cmd.CommandType = CommandType.Text;
            cmd.ExecuteNonQuery();
            con.Close();
            
        }

        //Atualizar Cliente
        public void atualizar(ClienteDTO cliente)
        {
            SqlConnection con = null;
            string strProvider = base.GetStringConexao();
            string strSql = SQL.atualizar;

            con = new SqlConnection(strProvider);
            SqlCommand cmd = new SqlCommand(strSql, con);

            base.AdicionarParametro(ref cmd, "@nome", SqlDbType.VarChar, cliente.nome);
            base.AdicionarParametro(ref cmd, "@rua", SqlDbType.VarChar, cliente.rua);
            base.AdicionarParametro(ref cmd, "@numero", SqlDbType.VarChar, cliente.numero);
            base.AdicionarParametro(ref cmd, "@complemento", SqlDbType.VarChar, cliente.complemento);
            base.AdicionarParametro(ref cmd, "@bairro", SqlDbType.VarChar, cliente.bairro);
            base.AdicionarParametro(ref cmd, "@cidade", SqlDbType.VarChar, cliente.cidade);
            base.AdicionarParametro(ref cmd, "@uf", SqlDbType.VarChar, cliente.uf);
            base.AdicionarParametro(ref cmd, "@observacao", SqlDbType.VarChar, cliente.observacao);
            base.AdicionarParametro(ref cmd, "@telefone", SqlDbType.VarChar, cliente.telefone);
            base.AdicionarParametro(ref cmd, "@celular", SqlDbType.VarChar, cliente.celular);
            base.AdicionarParametro(ref cmd, "@datacadastro", SqlDbType.DateTime, DateTime.Now);
            base.AdicionarParametro(ref cmd, "@nascimento", SqlDbType.DateTime, cliente.nascimento);
            base.AdicionarParametro(ref cmd, "@email", SqlDbType.VarChar, cliente.email);
            base.AdicionarParametro(ref cmd, "@codigo_cliente", SqlDbType.VarChar, cliente.codigo_cliente);


            con.Open();
            cmd.CommandType = CommandType.Text;
            cmd.ExecuteNonQuery();
            con.Close();

        }

        //Excluir Cliente
        public void excluir(int codigo)
        {
            SqlConnection con = null;
            string strProvider = base.GetStringConexao();
            string strSql = SQL.excluir;

            con = new SqlConnection(strProvider);
            SqlCommand cmd = new SqlCommand(strSql, con);

            base.AdicionarParametro(ref cmd, "@codigo", SqlDbType.Int, codigo);

            con.Open();
            cmd.CommandType = CommandType.Text;
            cmd.ExecuteNonQuery();
            con.Close();
        }

    }

    
}
